Skip to main content

An extremely fast Python package and project manager, written in Rust.

Project description

uv

uv image image image Actions status Discord

An extremely fast Python package and project manager, written in Rust.

Shows a bar chart with benchmark results.

Installing Trio's dependencies with a warm cache.

Highlights

uv is backed by Astral, the creators of Ruff.

Installation

Install uv with our standalone installers:

# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh
# On Windows.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Or, from PyPI:

# With pip.
pip install uv
# Or pipx.
pipx install uv

If installed via the standalone installer, uv can update itself to the latest version:

uv self update

See the installation documentation for details and alternative installation methods.

Documentation

uv's documentation is available at docs.astral.sh/uv.

Additionally, the command line reference documentation can be viewed with uv help.

Features

Projects

uv manages project dependencies and environments, with support for lockfiles, workspaces, and more, similar to rye or poetry:

$ uv init example
Initialized project `example` at `/home/user/example`

$ cd example

$ uv add ruff
Creating virtual environment at: .venv
Resolved 2 packages in 170ms
   Built example @ file:///home/user/example
Prepared 2 packages in 627ms
Installed 2 packages in 1ms
 + example==0.1.0 (from file:///home/user/example)
 + ruff==0.5.0

$ uv run ruff check
All checks passed!

$ uv lock
Resolved 2 packages in 0.33ms

$ uv sync
Resolved 2 packages in 0.70ms
Audited 1 package in 0.02ms

See the project documentation to get started.

uv also supports building and publishing projects, even if they're not managed with uv. See the publish guide to learn more.

Scripts

uv manages dependencies and environments for single-file scripts.

Create a new script and add inline metadata declaring its dependencies:

$ echo 'import requests; print(requests.get("https://astral.sh"))' > example.py

$ uv add --script example.py requests
Updated `example.py`

Then, run the script in an isolated virtual environment:

$ uv run example.py
Reading inline script metadata from: example.py
Installed 5 packages in 12ms
<Response [200]>

See the scripts documentation to get started.

Tools

uv executes and installs command-line tools provided by Python packages, similar to pipx.

Run a tool in an ephemeral environment using uvx (an alias for uv tool run):

$ uvx pycowsay 'hello world!'
Resolved 1 package in 167ms
Installed 1 package in 9ms
 + pycowsay==0.0.0.2
  """

  ------------
< hello world! >
  ------------
   \   ^__^
    \  (oo)\_______
       (__)\       )\/\
           ||----w |
           ||     ||

Install a tool with uv tool install:

$ uv tool install ruff
Resolved 1 package in 6ms
Installed 1 package in 2ms
 + ruff==0.5.0
Installed 1 executable: ruff

$ ruff --version
ruff 0.5.0

See the tools documentation to get started.

Python versions

uv installs Python and allows quickly switching between versions.

Install multiple Python versions:

$ uv python install 3.10 3.11 3.12
Searching for Python versions matching: Python 3.10
Searching for Python versions matching: Python 3.11
Searching for Python versions matching: Python 3.12
Installed 3 versions in 3.42s
 + cpython-3.10.14-macos-aarch64-none
 + cpython-3.11.9-macos-aarch64-none
 + cpython-3.12.4-macos-aarch64-none

Download Python versions as needed:

$ uv venv --python 3.12.0
Using Python 3.12.0
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate

$ uv run --python pypy@3.8 -- python --version
Python 3.8.16 (a9dbdca6fc3286b0addd2240f11d97d8e8de187a, Dec 29 2022, 11:45:30)
[PyPy 7.3.11 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>>

Use a specific Python version in the current directory:

$ uv python pin 3.11
Pinned `.python-version` to `3.11`

See the Python installation documentation to get started.

The pip interface

uv provides a drop-in replacement for common pip, pip-tools, and virtualenv commands.

uv extends their interfaces with advanced features, such as dependency version overrides, platform-independent resolutions, reproducible resolutions, alternative resolution strategies, and more.

Migrate to uv without changing your existing workflows — and experience a 10-100x speedup — with the uv pip interface.

Compile requirements into a platform-independent requirements file:

$ uv pip compile docs/requirements.in \
   --universal \
   --output-file docs/requirements.txt
Resolved 43 packages in 12ms

Create a virtual environment:

$ uv venv
Using Python 3.12.3
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate

Install the locked requirements:

$ uv pip sync docs/requirements.txt
Resolved 43 packages in 11ms
Installed 43 packages in 208ms
 + babel==2.15.0
 + black==24.4.2
 + certifi==2024.7.4
 ...

See the pip interface documentation to get started.

Platform support

See uv's platform support document.

Versioning policy

See uv's versioning policy document.

Contributing

We are passionate about supporting contributors of all levels of experience and would love to see you get involved in the project. See the contributing guide to get started.

FAQ

How do you pronounce uv?

It's pronounced as "you - vee" (/juː viː/)

How should I stylize uv?

Just "uv", please. See the style guide for details.

Acknowledgements

uv's dependency resolver uses PubGrub under the hood. We're grateful to the PubGrub maintainers, especially Jacob Finkelman, for their support.

uv's Git implementation is based on Cargo.

Some of uv's optimizations are inspired by the great work we've seen in pnpm, Orogene, and Bun. We've also learned a lot from Nathaniel J. Smith's Posy and adapted its trampoline for Windows support.

License

uv is licensed under either of

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in uv by you, as defined in the Apache-2.0 license, shall be dually licensed as above, without any additional terms or conditions.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uv-0.7.17.tar.gz (3.3 MB view details)

Uploaded Source

Built Distributions

uv-0.7.17-py3-none-win_arm64.whl (17.8 MB view details)

Uploaded Python 3Windows ARM64

uv-0.7.17-py3-none-win_amd64.whl (19.4 MB view details)

Uploaded Python 3Windows x86-64

uv-0.7.17-py3-none-win32.whl (17.6 MB view details)

Uploaded Python 3Windows x86

uv-0.7.17-py3-none-musllinux_1_1_x86_64.whl (18.6 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

uv-0.7.17-py3-none-musllinux_1_1_i686.whl (17.5 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

uv-0.7.17-py3-none-musllinux_1_1_armv7l.whl (17.2 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

uv-0.7.17-py3-none-manylinux_2_28_aarch64.whl (17.1 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.7.17-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.7.17-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (18.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

uv-0.7.17-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (19.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

uv-0.7.17-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (19.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.7.17-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (18.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.7.17-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (17.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.7.17-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (16.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64musllinux: musl 1.1+ ARM64

uv-0.7.17-py3-none-macosx_11_0_arm64.whl (16.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uv-0.7.17-py3-none-macosx_10_12_x86_64.whl (17.7 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

uv-0.7.17-py3-none-linux_armv6l.whl (17.6 MB view details)

Uploaded Python 3

File details

Details for the file uv-0.7.17.tar.gz.

File metadata

  • Download URL: uv-0.7.17.tar.gz
  • Upload date:
  • Size: 3.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.16

File hashes

Hashes for uv-0.7.17.tar.gz
Algorithm Hash digest
SHA256 afa3bc3d9ef414a40d49ae1e97b388d86b453d5018af9a30a9742f0e0389b30a
MD5 a04f5d4c0fdfbee543947cf8a339b461
BLAKE2b-256 3d464caac2d83e892dc5af557c99ea85b83977509658d964f3176a0d89943bf0

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-win_arm64.whl.

File metadata

  • Download URL: uv-0.7.17-py3-none-win_arm64.whl
  • Upload date:
  • Size: 17.8 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.16

File hashes

Hashes for uv-0.7.17-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 2bffb08919cefa69e7f97c0eeaabd0f5378c10fb31967432c453c4ccdb85e7fa
MD5 14d5b3d5ba3e2d63f4d64c95732b354b
BLAKE2b-256 8fc0253e160950cdc6969d134e91d44b3ce03719ab7d25c1d65ecf31f9b129e9

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-win_amd64.whl.

File metadata

  • Download URL: uv-0.7.17-py3-none-win_amd64.whl
  • Upload date:
  • Size: 19.4 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.16

File hashes

Hashes for uv-0.7.17-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 9c0a76fc1ccbf79c4902488c551bc47cad4a4121977a68ed54807c5e51f5e9f2
MD5 4968f2aff47cbc89d650ae1db257305a
BLAKE2b-256 ff17f6d149ff4c274d54dffe14f560dbc2f913edc52724f60e045e5c5962a24a

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-win32.whl.

File metadata

  • Download URL: uv-0.7.17-py3-none-win32.whl
  • Upload date:
  • Size: 17.6 MB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.16

File hashes

Hashes for uv-0.7.17-py3-none-win32.whl
Algorithm Hash digest
SHA256 ad93835a5e563bb0f2c869e6ef6c3113154bb2ab729900ae4416776382682f65
MD5 81919097dfc794a9eb0d74f44e30f990
BLAKE2b-256 7f57ca2bdf384a7916b290e75c5f4c50dc4afca943619789c1128a3ad43cade8

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for uv-0.7.17-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 e660ec1845b5c1c0908084497982d5d854f97d288beac0d7a5b7449447516222
MD5 f24c237becaadf4a1856e18e7775007d
BLAKE2b-256 2697178ea727f0260799eafea8e7aa4e5a590ac407cc88e709ccc41669323db3

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for uv-0.7.17-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 260ee846e7d5c8ca9d4be2cacbd5b4d469b4269a6a9a6a4efb6ab96aca38d896
MD5 72746f8aaf18494018bbd71ae17a5b54
BLAKE2b-256 cde1694903910ca2531763b40b4958d537bee14e6a3e85276202e4e70841d256

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-musllinux_1_1_armv7l.whl.

File metadata

File hashes

Hashes for uv-0.7.17-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 75fd22d218b0c406cee622380d11f39d8989af1b094c5523d0e09cecb7574408
MD5 3286fe02b9a22113d202581357fe4b4e
BLAKE2b-256 f5ff8f7f3aab879398fcb76caf498fae047e0f6a07ae9adb3b981a69ea81d80f

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for uv-0.7.17-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 223fa568f9bbb893ed008fb89fcbc4f1ebae2a3181409b4606024a0643d75f5e
MD5 b0010a8d9c73652b3e343f1b27286d2a
BLAKE2b-256 5a98c9b69f646f21208967e051ce2744de7fb6147d5ff92c621b1119254a7e3e

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for uv-0.7.17-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 17def57d55372556a72e5a274d440dff3cc7030a1c6fb389c356484d5d78ad51
MD5 765cbfe243c77ce266a8955a84d6bcf6
BLAKE2b-256 81bd66abf16b0c16bae685d832affde946917723adbccc1edfca69a391f5dbda

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for uv-0.7.17-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 1070d1f8b6199bc6f83753fe8e76a052c2655466a82d28713f3b890541d75703
MD5 d31229b9456f84fb13078177b257754f
BLAKE2b-256 286a1ccd2fae732d3950612ada9079882800b7ed4eda5916ebce80045b376c57

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for uv-0.7.17-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 764d64fd5f7fce6e5678fdcd1e2e80325b455aedaf47f3c82f0f91f4f510d570
MD5 51402e2e89fd03c15aa158c811b7703d
BLAKE2b-256 f707f5989caad49fd36f6e080ea29f5a5827c5bdc9d0e20aff4ada88e5060eb1

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl.

File metadata

File hashes

Hashes for uv-0.7.17-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 87dd56ad44a4ea7138fb090d5ef1bf525bf07cd12f54d53a22fb666b31aa09c5
MD5 b75b207294073dcff21a710e960edb6e
BLAKE2b-256 9297eb66b2c635f9645e945cd1d77f75689bd51a690b056f1d21339a65817a43

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for uv-0.7.17-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 df02470a988526262c8c575ae976ee80ad7503ee942a3948fca7e3474c024abd
MD5 4698163f1e72612d312c9f150e3c5c83
BLAKE2b-256 81bb3e7518b0f0ff0f961da0519f3d7000b184b76c5350028e822c73e968c11e

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for uv-0.7.17-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 fd757f5fa7a3cf9bdb86175bdf038ca749f5d4a9e4be4b3ea6de413d57933ed6
MD5 f310adb421c36754f6aad92033101b7f
BLAKE2b-256 a280b7632a549f01dcae611d049eb2f577d09100d7bef529d9a2ad7e142966e7

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for uv-0.7.17-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 311615fe6867edb8a4164724af60af45b247fa725f564e170da63e6ca97ba223
MD5 70e126066e06bfbc520f4f2bd688fcd0
BLAKE2b-256 ab722d1f406b83d7b5abaa4064bba8d7a0c261ff2c990c1aedb1bf9dd0155d60

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for uv-0.7.17-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6aefa5b19dad73f585d86f4542778d39b8d7ef6d6983e9a15385be53a8d05a62
MD5 ad1b65b66c62025db571a8f0852ef7df
BLAKE2b-256 336541470bc69ec1cac0a49bd11e0a2d83d5d28d17e6b6e9f77be0004d2d9b81

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for uv-0.7.17-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4f0789be0ce9c0188fd8304ce91c71f99a5a2f9945589ec7de2cafd53f007fbc
MD5 93885185dfb35e2b07af8be3a23a699b
BLAKE2b-256 f9d23417f32c85f82acb99550497d6cf7aa1ca1f961a346c0901233d4e777ea5

See more details on using hashes here.

File details

Details for the file uv-0.7.17-py3-none-linux_armv6l.whl.

File metadata

File hashes

Hashes for uv-0.7.17-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 5cce5694a3ed55c5064a27b296c21d1dcbc11dfa9f0c40a34933456f2a701a63
MD5 86cd5b4e87571efbdf807561d657d5e8
BLAKE2b-256 a96b1ff0add7108845d457d405302ef20788f9b8382dbcc88e354f8303ae20a1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page